package com.ruoyi.base.service.impl;

import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;

import com.ruoyi.common.utils.SecurityUtils;
import org.apache.catalina.security.SecurityUtil;
import org.apache.poi.hpsf.Decimal;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.base.mapper.MClockinMapper;
import com.ruoyi.base.domain.MClockin;
import com.ruoyi.base.service.IMClockinService;

/**
 * 打卡信息Service业务层处理
 * 
 * @author ruoyi
 * @date 2024-08-09
 */
@Service
public class MClockinServiceImpl implements IMClockinService 
{
    @Autowired
    private MClockinMapper mClockinMapper;


    /**
     * 查询打卡信息
     * 
     * @param id 打卡信息主键
     * @return 打卡信息
     */
    @Override
    public MClockin selectMClockinById(Long id)
    {
        return mClockinMapper.selectMClockinById(id);
    }

    /**
     * 查询打卡信息列表
     * 
     * @param mClockin 打卡信息
     * @return 打卡信息
     */
    @Override
    public List<MClockin> selectMClockinList(MClockin mClockin)
    {
        return mClockinMapper.selectMClockinList(mClockin);
    }

    /**
     * 新增打卡信息
     * 
     * @param mClockin 打卡信息
     * @return 结果
     */
    @Override
    public int insertMClockin(MClockin mClockin)
    {
        return mClockinMapper.insertMClockin(mClockin);
    }

    /**
     * 修改打卡信息
     * 
     * @param mClockin 打卡信息
     * @return 结果
     */
    @Override
    public int updateMClockin(MClockin mClockin)
    {
        return mClockinMapper.updateMClockin(mClockin);
    }

    /**
     * 批量删除打卡信息
     * 
     * @param ids 需要删除的打卡信息主键
     * @return 结果
     */
    @Override
    public int deleteMClockinByIds(Long[] ids)
    {
        return mClockinMapper.deleteMClockinByIds(ids);
    }

    /**
     * 删除打卡信息信息
     * 
     * @param id 打卡信息主键
     * @return 结果
     */
    @Override
    public int deleteMClockinById(Long id)
    {
        return mClockinMapper.deleteMClockinById(id);
    }

    @Override
    public String addClockIn() {
        MClockin mClockin = new MClockin();

        //获取工号
        String username= SecurityUtils.getUsername();
        BigDecimal s_id= new BigDecimal(username);
        Long sId= s_id.longValue();
        mClockin.setsId(sId);

        //获取姓名
        String name= mClockinMapper.selectName(mClockin.getsId());
        mClockin.setsName(name);

        //获取当前时间
        Date date = new Date();
        mClockin.setClockinTime(date);
        String dateStr = new SimpleDateFormat("yyyy-MM-dd").format(date);

        //判断是否已有该用户当天的打卡记录
        if(!mClockinMapper.selectClockin(mClockin)){
                mClockinMapper.insertMClockin(mClockin);
        }else{
            return "已打卡";
        }
        return "打卡成功";
    }

    @Override
    public Map<String,Object> getinfo() {
        //获取工号
        String username= SecurityUtils.getUsername();
        BigDecimal s_id= new BigDecimal(username);
        Long sId= s_id.longValue();
        //获取打卡信息
        List<MClockin> mClockins=mClockinMapper.selectClockinInfo(sId);

        //封装
        Map<String,Object> map = new HashMap<>();
        for (MClockin mClockin : mClockins) {
            map.put(new SimpleDateFormat("yyyy-MM-dd").format(mClockin.getClockinTime()),mClockin);
        }
        return map;
    }
}
